13777
23684
닫은. 이 질문은 세부 사항이나 명확성이 필요합니다. 현재 답변을 받고 있지 않습니다.
이 질문을 개선하고 싶으십니까? 이 게시물을 편집하여 세부 정보를 추가하고 문제를 명확히하십시오.
1 년 전에 문을 닫았습니다.
이 질문 개선
코드 챌린지를 수행 중이며 시작 인덱스를 지정하고 시작 인덱스에서 첫 번째 (3 개 또는 임의의 길이가 될 수 있음) 값만 가져 와서 배열에서 처음 3 개 값을 가져오고 싶습니다.
이 코드를 시도했는데 작동하지만 코드 구조가 너무 길어서 이해하기 쉽도록 짧게 만들 수 있습니다.
int n = 10;
이중 서명 = new double [] {1, 1, 1};
double [] ret = 새로운 double [n];
이중 합 = 0;
ret [0] = 서명 [0];
ret [1] = 서명 [1];
ret [2] = 서명 [2];
int x, i;
for (i = 0; i 
                                
LINQ를 사용하여 다음과 같이 시도 할 수 있습니다.
var values ​​= array.Skip (index)
. 테이크 (n)
.ToArray ();
여기서 index는 첫 번째 항목의 인덱스이고 n은 선택하려는 항목의 수입니다.
예 : https://dotnetfiddle.net/Pk1rwY
참고로. LINQ를 사용한다고해서 코드가 더 빨라지는 것은 아닙니다. 코드가 얼마나 성능이 좋은지 평가하려면 BenchmarkDotNet과 같은 것을 사용해야합니다.
|
Linq 솔루션 없음 :
개인 정적 T [] Extract  (T [] 소스, int fromIndex, int 길이) {
if (null == 소스)
throw new ArgumentNullException (nameof (source));
그렇지 않으면 (fromIndex <0)
새로운 ArgumentOutOfRangeException (nameof (fromIndex),
"From Index는 음수가 아니어야합니다.");
else if (길이 <0)
새로운 ArgumentOutOfRangeException (nameof (length),
"길이는 음수가 아니어야합니다.");
if (fromIndex> = source.Length || 길이 == 0)
새로운 T [0] 반환;
T [] result = new T [Math.Min (length, source.Length-fromIndex)];
Array.Copy (소스, fromIndex, 결과, 0, 결과. 길이);
반환 결과;
}
그때
double [] 서명 = 새로운 double [] {0, 1, 2, 3, 4, 5};
double [] ret = 추출 (서명, 3, 2);
Console.Write (string.Join ( ",", ret));
결과:
3, 4
|
질문에서 .Take 및 .Skip 연산자를 활용해야합니다.
var result = array.Skip (startingIndex) .Take (numberOfElements);
따라서 코드에서 약간 다른 작업, 즉 합산 요소를 시도하는 것 같습니다. .Sum 연산자가 도움이 될 수 있습니다.
|
찾고있는 답변이 아닙니까? c # arrays linq 태그가 지정된 다른 질문을 찾아 보거나 직접 질문하십시오.